#ifndef STACK_H_
#define STACK_H_

#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <stdbool.h>

//在数据结构中栈是一种特殊的顺序表
//在操作系统中栈是虚拟进程中的内存分布

typedef int STDataType;

typedef struct Stack
{
    STDataType *p;
    int top;      //栈顶
    int Capacity; //容量
} ST;

void StackInit(ST *st);               //初始化栈
void StackDestory(ST *st);            //销毁栈
void StackPush(ST *st, STDataType x); //压栈
void StackPop(ST *st);                //出栈
bool StackEmpty(ST *st);              //判断栈是否为空
int StackSize(ST *st);                //栈中变量的数量
STDataType StackTop(ST *st);          //栈顶的值

#endif